package com.qf.team2.netdisc.dao;

import com.qf.team2.netdisc.common.pojo.entity.User;
import com.qf.team2.netdisc.common.pojo.qo.DocumentQO;
import com.qf.team2.netdisc.common.pojo.qo.UserQO;
import org.apache.ibatis.annotations.Param;

/**
 * 用户操作dao层
 *
 * @author QWER
 */
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
public interface UserMapper {

    /**
     * 添加目录
     *
     * @param documentQO 文档问:
     * @return {@link DocumentQO}
     */
    int addDirectory(DocumentQO documentQO);

    /**
     * 查找用户名
     *
     * @param userId 用户id
     * @return 用户对象
     */
    User selectUserByUserId(Integer userId);

    /**
     * 添加用户
     *
     * @param userQO 用户注册参数实体:
     * @return {@link UserQO}
     */
    int addUser(UserQO userQO);

    /**
     * 关联用户id和根目录id
     *
     * @param userId 用户id
     * @param rootId 根id
     * @return int 数据库受影响的行数
     */
    int updateUserRoot(@Param("userId") Integer userId,
                       @Param("rootId") Integer rootId);

    /**
     * 查找用户已使用空间
     *
     * @param userName 用户名
     * @return 已使用空间大小，单位KB，不足1KB当1KB
     */
    int selectCapacityByUserName(String userName);

    /**
     * 根据用户名查找用户
     *
     * @param userName 用户名
     * @return {@link User}
     */
    User selectUserByUsername(String userName);

    /**
     * 更新用户角色
     *
     * @param userId    用户id
     * @param character 新的角色码
     * @return int 受影响的行数
     */
    int updateCharacter(@Param("userId") Integer userId,
                        @Param("character") Integer character);
}
